1
Introducción a PyTorch: ¿Por qué los tensores son importantes?
EvoClass-AI002Lección 1
00:00

Introducción a PyTorch: ¿Por qué los tensores son importantes?

PyTorch es un marco de código abierto altamente flexible y dinámico, muy valorado para la investigación en aprendizaje profundo y el desarrollo rápido de prototipos. En su núcleo, el tensor es la estructura de datos indispensable. Es un arreglo multidimensional diseñado para manejar eficientemente las operaciones numéricas necesarias para modelos de aprendizaje profundo, con soporte automático para aceleración en aceleración en GPU automatically.

1. Comprender la estructura del tensor

Cada entrada, salida y parámetro del modelo en PyTorch está encapsulado en un tensor. Sirven para el mismo propósito que los arreglos de NumPy, pero están optimizados para procesamiento en hardware especializado como GPUs, lo que los hace mucho más eficientes para las operaciones de álgebra lineal a gran escala requeridas por las redes neuronales.

Las propiedades clave definen el tensor:

  • Forma: Define las dimensiones de los datos, expresadas como una tupla (por ejemplo, $4 \times 32 \times 32$ para un lote de imágenes).
  • Tipo de dato: Indica el tipo numérico de los elementos almacenados (por ejemplo, torch.float32 para los pesos del modelo, torch.int64 para indexación).
  • Dispositivo: Indica la ubicación física del hardware: típicamente 'cpu' o 'cuda' (GPU de NVIDIA).
Grafo dinámico y Autograd
PyTorch utiliza un modelo de ejecución imperativo, lo que significa que el grafo computacional se construye mientras se ejecutan las operaciones. Esto permite al motor integrado de diferenciación automática, Autograd, rastrear cada operación sobre un tensor, siempre que se establezca la propiedad requires_grad=True esté activada, permitiendo el cálculo sencillo de gradientes durante la propagación hacia atrás.
fundamentals.py
TERMINALbash — entorno-pytorch
> Listo. Haz clic en "Ejecutar" para ejecutar.
>
INSPECTOR DE TENSORESEn vivo

Ejecuta el código para inspeccionar tensores activos
Pregunta 1
¿Qué comando crea un tensor de tamaño $5 \times 5$ con números aleatorios siguiendo una distribución uniforme entre 0 y 1?
torch.rand(5, 5)
torch.random(5, 5)
torch.uniform(5, 5)
torch.randn(5, 5)
Pregunta 2
Si el tensor $A$ está en la CPU y el tensor $B$ está en el dispositivo CUDA, ¿qué sucede si intentas calcular $A + B$?
Ocurrió un error porque las operaciones requieren que los tensores estén en el mismo dispositivo.
PyTorch mueve automáticamente $A$ al dispositivo CUDA y continúa.
La operación se realiza en la CPU y el resultado se devuelve a la CPU.
Pregunta 3
¿Cuál es el tipo de dato (dtype) más común utilizado para los pesos del modelo y los cálculos intermedios en el aprendizaje profundo?
torch.float32 (punto flotante de precisión simple)
torch.int64 (entero largo)
torch.bool
torch.float64 (punto flotante de doble precisión)
Desafío: Manipulación de tensores y forma
Prepara un tensor para una operación matricial específica.
Tienes un vector de características $F$ de forma $(10,)$. Necesitas multiplicarlo por una matriz de pesos $W$ de forma $(10, 5)$. Para que la multiplicación matricial (MatMul) funcione, $F$ debe ser bidimensional.
Paso 1
¿Cuál debe ser la forma de $F$ antes de multiplicarla con $W$?
Solución:
Las dimensiones internas deben coincidir, así que $F$ debe ser $(1, 10)$. Entonces $(1, 10) @ (10, 5) \rightarrow (1, 5)$.
Código: F_new = F.unsqueeze(0) o F_new = F.view(1, -1)
Paso 2
Realiza la multiplicación matricial entre $F_{new}$ y $W$ (forma $(10, 5)$).
Solución:
La operación es una multiplicación matricial directa.
Código: output = F_new @ W o output = torch.matmul(F_new, W)
Paso 3
¿Qué método devuelve explícitamente un tensor con las dimensiones especificadas, permitiéndote volver a aplanar el tensor a $(50,)$? (Supón que $F$ era inicialmente $(5, 10)$ y ahora está aplanado.)
Solución:
Usa el método view o reshape métodos. La manera más rápida de aplanar es usar frecuentemente -1 para una dimensión.
Código: F_flat = F.view(-1) o F_flat = F.reshape(50)